GAE wiki
主要解决的还是编码问题,需要各种转换
# !/usr/bin/python # coding : utf-8 # CopyRight 2012 Adou , All Rights Reserved . import webapp2 from google.appengine.api import users from google.appengine.ext import db import urllib import os import jinja2 class ViewTimes(db.Model): filename = db.StringProperty() filepath = db.StringProperty() num = db.IntegerProperty(required=True,default=0) jinja_environment = jinja2.Environment( loader=jinja2.FileSystemLoader(os.path.dirname(__file__))) def login(func) : def wrapper(*args,**kw): user = users.get_current_user() if not user: args[0].redirect(users.create_login_url('/todo/')) else : return func(*args,**kw) return wrapper def ip2name(ip): ip = ip.split('.') ip = [int(i) for i in ip] ip[0] = chr(ip[0]|128) ip[1] = chr(ip[1]|128) ip[2] = chr(ip[2]|128) ip[3] = chr(ip[3]) name = (ip[0]+ip[3]+ip[1]+ip[3]+ip[2]+ip[3]).decode('cp936').encode('utf-8') return name class MainPage(webapp2.RequestHandler): def get(self): user = users.get_current_user() if user: nickname = user.nickname() else : #nickname = ip2name(self.request.remote_addr) nickname = self.request.remote_addr #articles = db.GqlQuery("SELECT * FROM ViewTimes ORDER BY num DESC LIMIT 10") content = { 'username':nickname, #'articles':articles, } template = jinja_environment.get_template('index.html') self.response.out.write(template.render(content)) class VimWiki(webapp2.RequestHandler): def get(self,path): filename = path.decode('utf-8') if path.endswith('.html') : path = 'vimwiki'+os.sep + path.decode('utf-8').encode('cp936') if os.path.exists(path) : self.response.out.write(open(path).read().decode('cp936')) gps = db.GqlQuery("SELECT * FROM ViewTimes WHERE filename=:1 and filepath=:2 ORDER BY num LIMIT 1" ,filename,'vimwiki'+os.sep) db.delete(gps) vt = ViewTimes() vt.filename = filename vt.filepath = 'vimwiki' + os.sep vt.num = 1 for gp in gps : vt.num = vt.num + gp.num vt.put() else : self.redirect('/') class Diary(webapp2.RequestHandler): @login def get(self,path): if path.endswith('.html') : path = 'vimwiki'+os.sep+'diary'+os.sep+ path.decode('utf-8').encode('cp936') if os.path.exists(path) : self.response.out.write(open(path).read().decode('cp936')) else : self.redirect('/') class Comment(webapp2.RequestHandler): def get(self): pass class Login(webapp2.RequestHandler): def get(self) : self.redirect(users.create_login_url('/')) class Logout(webapp2.RequestHandler): def get(self) : self.redirect(users.create_logout_url('/')) app = webapp2.WSGIApplication( [ ('/',MainPage), ('/vimwiki/(.*)',VimWiki), #('/vimwiki/diary/(.*)',Diary), #('/todo/',Todo), ('/login/',Login), ('/logout/',Logout), ], debug=True )